//
//  NWDLogInformationManager.h
//  MGLivenessDetection
//
//  Created by tom on 2019/4/25.
//  Copyright © 2019 megvii. All rights reserved.
//

#import <Foundation/Foundation.h>

@class NWDGestureInfo;

typedef NSString * NWDGestureName NS_EXTENSIBLE_STRING_ENUM;

@protocol NWDFlushProtocol <NSObject>
- (void)flush;
@end

NS_ASSUME_NONNULL_BEGIN

@interface NWDLogInformationManager : NSObject <NWDFlushProtocol>

+ (instancetype)share;


/**
 一次检测的完整日志。

 @return 一次检测的完整日志
 */
- (NSDictionary*)getLogInformation;


/**
 授权信息配置。

 @param authResult 授权请求是否通过
 @param message 授权失败原因
 @param time 过期时间 yyyy-MM-dd HH:mm:ss
 */
- (void)configureAuthorizationWithAuthReuslut:(BOOL)result errorMessage:(NSString* __nullable)message expire:(NSString*)time;


/**
 照镜子阶段信息配置。

 @param time 总耗时
 @param actions 检测动作序列
 */
- (void)configureMirrorWithTimeCost:(float)time steps:(NSArray<NWDGestureName>*)actions;

FOUNDATION_EXPORT NWDGestureName const GESTURE_TYPE_SHAKE       API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
FOUNDATION_EXPORT NWDGestureName const GESTURE_TYPE_NOD         API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
FOUNDATION_EXPORT NWDGestureName const GESTURE_TYPE_MOUSE       API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));
FOUNDATION_EXPORT NWDGestureName const GESTURE_TYPE_EYE         API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0));


/**
 动作识别信息。

 @param handler <#handler description#>
 */
- (void)configureGestureWith:(void(^)(NSMutableArray<NWDGestureInfo*>*infos))handler;
@end


/****************    NWDGestureInfo        ****************/


@interface NWDGestureInfo : NSObject <NWDFlushProtocol>

/**
 创建单个动作检测信息。

 @param index 动作序号
 @param name 动作名称
 @param result 动作检测结果
 @param message 检测结果失败原因
 @param time 动作检测耗时
 @return 单个动作检测信息实例
 */
+ (instancetype)infoWithStep:(int)index gestureName:(NWDGestureName)name result:(BOOL)result errorMessage:(NSString*)message cost:(float)time;
@end

NS_ASSUME_NONNULL_END
